웹 서버(Web Server)와 WAS(Web Application Server)는 웹 사이트를 운영하기 위한 필수적인 구성 요소입니다. 웹 서버는 웹 사이트의 정적 콘텐츠를 제공하고 WAS는 동적 콘텐츠를 제공합니다. 아래서 웹 서버와 WAS의 구성과 역활에 대해 알아보겠습니다.
목 차
Toggle웹 서버(Web Server)웹 서버(Web Server)는 사용자가 브라우저(크롬, 앳지, 파이어 폭스)에 URL(https://developer-guide.com)을 입력해 웹 페이지를 요청하면 HTML, CSS, JavaScrip로 작성된 문서나 이미지 같은 정적 콘텐츠를 사용자에게 제공하는 역할입니다.
다시 설명하면 HTTP 또는 HTTPS를 통해 웹 페이지를 요청하면 웹 페이지가 들어있는 컴포넌트 파일을 사용자에게 제공하는 서버 프로그램입니다. 흔히 하드웨어도 웹 서버로 혼동되어 사용되는 경우가 있지만 일반적으로 웹 서버는 소프트웨어를 말합니다.
정적 페이지(Static Pages)정적 페이지(Static Pages)는 데이터베이스에서 가져오는 데이터나 다른 연산처리 없이 HTML, CSS, JavaScript로 작성된 문서나 이미지 파일 등을 페이지에 그대로 보여주는것 입니다. 그렇기 때문에 사용자가 누구든 항상 동일한 페이지를 보여줍니다.
웹 서버(Web Server)의 기능위에서 설명한 것처럼 웹 서버(Web Server)의 주 기능은 정적 페이지를 사용자에게 제공하는 것입니다. 그 외에 기능으로 웹 서버 프로그램에 종류에 따라 조금씩 다를 수 있지만 공통적으로 HTTP / HTTPS, 정적 웹 페이지 관리, 가상 호스팅, 콘텐츠 압축, 대역폭 제한 등의 기능을 제공합니다.
HTTP / HTTPS : HTTP(HyperText Transfer Protocol)와 HTTPS(HyperText Transfer Protocol Secure)는 W3 상에서 정보를 주고받을 수 있는 프로토콜입니다. 이때 HTTPS는 보안이 강화된 버전입니다.정적 웹 페이지 관리 : 정적 웹 페이지는 HTML,CSS,JavaScript와 이미지 등으로 작성된 문서입니다. 파일 시스템의 파일들로 저장되며 HTTP를 통해 웹 서버에 의해 이용할 수 있습니다.가상 호스팅 : 가상 호스팅(virtual hosting)은 하나의 서버에서 여러개의 도메인을 호스트 하는 방식을 말합니다.콘텐츠 압축 : 데이터를 더 적은 저장 공간에 효율적으로 기록하기 위한 기술입니다.대역폭 제한 : 의도적으로 인터넷 서비스를 느리게 하는 것을 의미합니다. 이는 네트워크의 과부하를 막아 서비스 품질을 보장하는데 도움을 줍니다.웹 서버(Web Server) 종류대표적인 웹 서버(Web Server)의 종류로는 Apache WEB Server, Nginx WEB Server, IIS WEB Server가 있습니다.
Apache WEB Server : 오픈소스로 가장 대표적인 1위 웹 서버입니다. 가장 최근에는 Nginx에게 밀리는 추세입니다. 다양한 모듈과 많은 커뮤니티로 인해 방대한 자료가 있지만 많은 기등들로 인해 무거운 단점이 있습니다.Nginx WEB Server : 오픈소스 웹 서버 입니다. 프록시 기능이 뛰여나며 Apache에 비해 가벼워서 빠릅니다. 다만 확장 모듈이 Apache에 비해 적습니다.IIS WEB Server : Microsoft의 유료 웹서버 소프트웨어입니다. Microsoft에서 만든 만큼 익숙한 GUI를 제공하여 사용이 편하지만 가격이 비싼 단점을 가지고 있습니다.WAS(Web Application Server)WAS(Web Application Server)는 사용자가 브라우저(크롬, 앳지, 파이어 폭스)에 URL(https://developer-guide.com)을 입력해 웹 페이지를 요청하면 동적 컨텐츠를 제공하는 역활을 합니다.
일반적으로 웹 서버와 웹 컨터에너(Web Container)로 구성되어 정적, 동적 콘텐츠 기능을 모두 수행하며 웹 애플리케이션을 실행하고 관리하는 소프트웨어입니다.
대표적인 WAS는 Apache Tomcat, IBM WebSphere, Oracle WebLogic, JBoss 등이 있습니다.
동적 페이지(Dynamic Pages)동적 페이지(Dynamic Pages)는 사용자가 페이지 요청하면 데이터베이스에 저장된 정보를 가져오거나 서버에서 다른 연산을 처리 후 해당 결과가 포함된 페이지를 보여주는 것을 말합니다. 그렇기 때문에 사용자마다 요청하는 정보마다 다른 페이지가 화면에 보여집니다.
웹 컨테이너(Web Container)웹 컨테이너(Web Container)는 WAS에서 동적 컨텐츠를 처리할 수 있게 해줍니다. 즉 jsp, servlet 등을 실행시킬 수 있는 소프트웨어를 이야기합니다.
데이터베이스와 접속, 트랜잭션 관리, 비지니스 로직 수행 등의 기능을 제공해 웹 애플리케이션의 성능, 보안, 확장성, 관리 편의성 등을 향상시켜 보다 웹 애플리케이션을 보다 안정적이고 효율적으로 운영할 수 있게 도와줍니다.
WAS(Web Application Server) 처리 과정사용자는 웹 서버로 요청(request)을 보낸다.웹 컨테이너가 서블릿이 클래스가 존재 하는경우 서블릿 메서드가 로드된다.서블릿 메서드 실행 결과를 응답(response)을 웹 컨테이너에 넘겨준다.웹 컨테이너는 이를 서버에 전달한다. 서버는 응답을 클라이언트에게 전달한다.웹 컨테이너가 서블릿이 존재하지 않는 경우 JSP 파일을 JAVA 파일로 변환한다.JAVA 파일은 컴파일 되어 서블릿 클래스가 된다.서블릿 메서드는 로드되어 실행 결과를 응답(response)을 웹 컨테이너에 넘겨준다.웹 컨테이너는 이를 서버에 전달한다. 서버는 응답을 클라이언트에게 전달한다.웹 서버와 WAS를 같이 사용하는 이유위에서 설명한것과 같이 WAS(Web Application Server)는 웹 서버(Web Server)를 포함하고 있습니다. 하지만 일반적으로 웹 서버와 WAS를 같이 사용합니다.
기본적인 이유는 WAS의 부담을 줄이기 위해서 입니다. 또 보안적인 측면도 중요합니다. 사용자가 WAS에 접근하는 포트에 직접 연결되어 있다면 설정 파일이 노출될 수 있습니다. 웹 서버를 통해 WAS에 접근하면 사용자에게 WAS 설정 파일을 노출시키지 않을 수 있고 방화벽을 이용해서 외부에서 사용자가 직접 WAS에 접근 못하도록 막을 수 있습니다.
참고자료 :yozm.wishket,binux.tistory,wikipedia
이 글 공유하기:트위터로 공유하기 (새 창에서 열림)페이스북에 공유하려면 클릭하세요. (새 창에서 열림)Pinterest에서 공유하려면 클릭하세요 (새 창에서 열림)LinkedIn으로 공유하기 (새 창에서 열림)Telegram에 공유하려면 클릭하세요. (새 창에서 열림)관련